package cn.net.isir.common.pay.alipay;

import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import cn.net.isir.common.config.AlipayConfig;

/**
 * @author liuxubo
 * @filename AlipayClientUtils.java
 * @package cn.net.isir.common.alipay
 * @email lxb@isir.net.cn
 * @date 2018/11/14
 * @comment
 * @since 1.8
 */
public class AlipayClientUtils {
    private static AlipayClient alipayClient = null;

    public static AlipayClient getAlipayClient() {
        if (alipayClient == null) {
            initAlipayClient();
        }
        return alipayClient;
    }

    private static void initAlipayClient() {
        /*
         * URL	支付宝网关（固定）	https://openapi.alipay.com/gateway.do
         * APPID	APPID 即创建应用后生成	获取见上面创建应用并获取APPID
         * APP_PRIVATE_KEY	开发者私钥，由开发者自己生成	获取详见上面配置密钥
         * FORMAT	参数返回格式，只支持json	json（固定）
         * CHARSET	编码集，支持GBK/UTF-8	开发者根据实际工程编码配置
         * ALIPAY_PUBLIC_KEY	支付宝公钥，由支付宝生成	获取详见上面配置密钥
         * SIGN_TYPE	商户生成签名字符串所使用的签名算法类型，目前支持RSA2和RSA，推荐使用RSA2	RSA2
         *
         */
        alipayClient = new DefaultAlipayClient(
                AlipayConfig.getUrl(),
                AlipayConfig.getApp_id(),
                AlipayConfig.getPrivate_key(),
                "json",
                "UTF-8",
                AlipayConfig.getAlipay_public_key(),
                "RSA2");
////实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称：alipay.open.public.template.message.industry.modify
//        AlipayOpenPublicTemplateMessageIndustryModifyRequest request = new AlipayOpenPublicTemplateMessageIndustryModifyRequest();
////SDK已经封装掉了公共参数，这里只需要传入业务参数
////此次只是参数展示，未进行字符串转义，实际情况下请转义
//        request.setBizContent("  {" +
//                "    \"primary_industry_name\":\"IT科技/IT软件与服务\"," +
//                "    \"primary_industry_code\":\"10001/20102\"," +
//                "    \"secondary_industry_code\":\"10001/20102\"," +
//                "    \"secondary_industry_name\":\"IT科技/IT软件与服务\"" +
//                " }");
//        AlipayOpenPublicTemplateMessageIndustryModifyResponse response = alipayClient.execute(request);
////调用成功，则处理业务逻辑
//        if(response.isSuccess()){
//            //.....
//        }
    }

    /*********************获取支付sdk***********************/

    private static AlipayClient alipayPayClient = null;

    public static AlipayClient getAlipayPayClient() {
        if (alipayPayClient == null) {
            initAlipayPayClient();
        }
        return alipayPayClient;
    }

    private static void initAlipayPayClient() {
        /*
         * URL	支付宝网关（固定）	https://openapi.alipay.com/gateway.do
         * APPID	APPID 即创建应用后生成	获取见上面创建应用并获取APPID
         * APP_PRIVATE_KEY	开发者私钥，由开发者自己生成	获取详见上面配置密钥
         * FORMAT	参数返回格式，只支持json	json（固定）
         * CHARSET	编码集，支持GBK/UTF-8	开发者根据实际工程编码配置
         * ALIPAY_PUBLIC_KEY	支付宝公钥，由支付宝生成	获取详见上面配置密钥
         * SIGN_TYPE	商户生成签名字符串所使用的签名算法类型，目前支持RSA2和RSA，推荐使用RSA2	RSA2
         *
         */
        alipayPayClient = new DefaultAlipayClient(
                AlipayConfig.getUrl(),
                AlipayConfig.getApp_id_pay(),
                AlipayConfig.getPrivate_key_pay(),
                "json",
                "UTF-8",
                AlipayConfig.getAlipay_public_key_pay(),
                "RSA2");
////实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称：alipay.open.public.template.message.industry.modify
//        AlipayOpenPublicTemplateMessageIndustryModifyRequest request = new AlipayOpenPublicTemplateMessageIndustryModifyRequest();
////SDK已经封装掉了公共参数，这里只需要传入业务参数
////此次只是参数展示，未进行字符串转义，实际情况下请转义
//        request.setBizContent("  {" +
//                "    \"primary_industry_name\":\"IT科技/IT软件与服务\"," +
//                "    \"primary_industry_code\":\"10001/20102\"," +
//                "    \"secondary_industry_code\":\"10001/20102\"," +
//                "    \"secondary_industry_name\":\"IT科技/IT软件与服务\"" +
//                " }");
//        AlipayOpenPublicTemplateMessageIndustryModifyResponse response = alipayClient.execute(request);
////调用成功，则处理业务逻辑
//        if(response.isSuccess()){
//            //.....
//        }
    }


}
